/*==========================================================================*/
/*            Copyright (C) 2000 Texas Instruments, Incorporated            */
/*                          All Rights Reserved.                            */
/*==========================================================================*/
/*
 *  ======== ih263dec.h ========
 *  IH263DEC Interface Header
 */
#ifndef IH263DEC_
#define IH263DEC_

#include <std.h>
#include <ialg.h>
#include <ih263.h>

/*
 *  ======== IH263DEC_Handle ========
 *  This handle is used to reference all H263DEC instance objects
 */
typedef struct IH263DEC_Obj *IH263DEC_Handle;

/*
 *  ======== IH263DEC_Obj ========
 *  This structure must be the first field of all H263DEC instance objects
 */
typedef struct IH263DEC_Obj
{
    struct IH263DEC_Fxns *fxns;

} IH263DEC_Obj;

/*
 *  ======== IH263DEC_Params ========
 *  This structure defines the creation parameters for all H263DEC objects
 */
typedef struct IH263DEC_Params
{
    int 		  size;		/* must be first field of all params structures  */
    unsigned char nMB2write;/* number of MBs to write for one call of wrRecMB*/

} IH263DEC_Params;

/*
 *  ======== IH263DEC_PARAMS ========
 *  Default parameter values for H263DEC instance objects
 */
extern IH263DEC_Params IH263DEC_PARAMS;

/*
 *  ======== IH263DEC_Fxns ========
 *  This structure defines all of the operations on H263DEC objects
 */
typedef struct IH263DEC_Fxns
{
    IALG_Fxns ialg; /* IH263DEC extends IALG */

    int       (*decode)(IH263DEC_Handle  handle,
                        unsigned int    *in,
                        unsigned char   *out[3]);

} IH263DEC_Fxns;

/*
 *  ======== IH263DEC_Status ========
 *  Status structure defines the parameters that can be changed or read
 *  during real-time operation of the alogrithm.
 */
typedef struct IH263DEC_Status
{
    int            size;      /* must be first field of all status structures */
    int            frame;     /* number of frames decoded                     */
    int            width;     /* width of decoded  frame                      */
    int            height;    /* height of decoded frame                      */
    H263_SRCFMT    srcFormat; /* source format of decoded sequence            */
    H263_PTYPE     picType;   /* decoded picture type                         */
    unsigned char *y;         /* pointer to Y                                 */
    unsigned char *u;         /* pointer to U/Cb                              */
    unsigned char *v;         /* pointer to V/Cr                              */
    int            retVal;    /* decoder return value (error code)            */
    int            nBits;     /* number of bits consumed by current frame     */

} IH263DEC_Status;

/*
 *  ======== IH263DEC_Cmd ========
 *  The Cmd enumeration defines the control commands for the H263DEC
 *  control method.
 */
typedef enum IH263DEC_Cmd
{
    IH263DEC_GETSTATUS,
    IH263DEC_SETSTATUS,
    IH263DEC_CLRSTATUS

} IH263DEC_Cmd;

#endif	/* IH263DEC_ */

/*==========================================================================*/
/*            Copyright (C) 2000 Texas Instruments, Incorporated            */
/*                          All Rights Reserved.                            */
/*==========================================================================*/
